
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" lang="tr">
  <head>
    <meta charset="utf-8" />
    <title>Milis’te Paket Üretimi &#8212; Milis Linux Belgeler  belgelendirme çalışması</title>
    <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../_static/doctools.js"></script>
    <script type="text/javascript" src="../../_static/language_data.js"></script>
    <script type="text/javascript" src="../../_static/translations.js"></script>
    <link rel="index" title="Dizin" href="../../genindex.html" />
    <link rel="search" title="Ara" href="../../search.html" />
    <link rel="next" title="Milis Ortamı Oluşturma" href="ortam_olusturma.html" />
    <link rel="prev" title="Mps ile Milis Linux Yapımı" href="mps_ile_iso_yapimi.html" />
   
  <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
  
  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />

  </head><body>
  

    <div class="document">

      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="milis-te-paket-uretimi">
<h1>Milis’te Paket Üretimi<a class="headerlink" href="#milis-te-paket-uretimi" title="Bu başlığın kalıcı bağlantısı">¶</a></h1>
<div class="toctree-wrapper compound">
</div>
<p>Milis Linux’ta paketler talimat dizininde belirtilen verilere göre derlenir, yüklenir ve paketlenir.
Bu belge sıfırdan bir paketin nasıl oluşturulduğunu göstermek için hazırlanmıştır.</p>
<div class="section" id="talimat-in-hazirlanmasi">
<h2>Talimat’ın hazırlanması<a class="headerlink" href="#talimat-in-hazirlanmasi" title="Bu başlığın kalıcı bağlantısı">¶</a></h2>
<p>Bir paketin talimatının hazırlanması için yapılacak şey gerekli bilgilerin doğru bir şekilde
doldurulmasıdır. Talimat dosyasının yapısı için lütfen <a class="reference external" href="http://mls.akdeniz.edu.tr/belgeler/docs/tr/talimat.html">Talimat Sistemi</a>
belgesini inceleyin.
Bu belgede talimatını hazırlayacağımız paket ‘htop’ adı verilen bir işlem monitorü.</p>
<div class="section" id="paket-bilgileri">
<h3>Paket bilgileri<a class="headerlink" href="#paket-bilgileri" title="Bu başlığın kalıcı bağlantısı">¶</a></h3>
<p>Paket için gerekli bilgiler toplandıktan sonra, talimatın ilk formu aşağıdaki gibi
olacaktır:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">paket</span><span class="p">]</span>
<span class="n">tanim</span>       <span class="o">=</span> <span class="n">Interaktif</span> <span class="n">işlem</span> <span class="n">izleyici</span>
<span class="n">paketci</span>     <span class="o">=</span> <span class="n">milispaketci</span>
<span class="n">grup</span>        <span class="o">=</span> <span class="n">sistem</span>
<span class="n">url</span>         <span class="o">=</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">hisham</span><span class="o">.</span><span class="n">hm</span><span class="o">/</span><span class="n">htop</span>
</pre></div>
</div>
</div>
<div class="section" id="gerekler">
<h3>Gerekler<a class="headerlink" href="#gerekler" title="Bu başlığın kalıcı bağlantısı">¶</a></h3>
<p>Sırada paketin derlenmesi ve çalışması için gerekliliklerin bulunması var. Bunlar belirli kaynaklardan
araştırılarak veya manuel olarak bulunabilir.
Paketlenecek olan ‘htop’ın derlenmesi için ‘python’a, çalışması için ise ‘ncurses’e ihtiyacı
var.</p>
<p>Burada bilinmesi gereken nokta, temel sistemde bulunan paketler talimatlara gereklilik olarak
eklenmez. Bizim durumumuzda ‘ncurses’ temel sistemde bulunan bir program olduğundan bu gerekliliği
eklemeyceğiz.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">gerek</span><span class="p">]</span>
<span class="n">derleme</span> <span class="o">=</span> <span class="n">python</span>
<span class="n">calisma</span> <span class="o">=</span>
</pre></div>
</div>
</div>
<div class="section" id="kaynaklar">
<h3>Kaynaklar<a class="headerlink" href="#kaynaklar" title="Bu başlığın kalıcı bağlantısı">¶</a></h3>
<p>Paketin derlenmesi veya paketlenmesi için kaynak kodlara ve yamalara ihtiyacı var. Bunun yanında
eğer büyüyen bir derleme veya paketleme betiğiniz varsa bunu derle.sh veya pakur.sh adı altında
talimat dizininde tutmak istiyebilirsiniz. Bunları talimat dosyanızda kullanırken kaynak altında
<strong>mutlaka</strong> belirtmelisiniz.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[kaynak]
gz          = $url/releases/$surum
</pre></div>
</div>
</div>
<div class="section" id="dosya-hashleri">
<h3>Dosya hashleri<a class="headerlink" href="#dosya-hashleri" title="Bu başlığın kalıcı bağlantısı">¶</a></h3>
<p>İndirilen kaynak dosyalarının bozulma ihtimaline karşın talimatınızda dosyaların hashlerini bulundurmak her zaman için
iyi bir fikirdir. Bunlar mps tarafından otomatik olarak algılanır ve kontrol edilir. Hashlerinizin hangi
dosyaya ait oluduğunu belirtmek için dosyanın kaynak altındaki sırasını kullanınız. Paketlediğimiz ‘htop’
uygulamasında kullandığımız kaynak için gerekli hashi ekleyelim.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">sha256</span><span class="p">]</span>
<span class="mi">1</span>           <span class="o">=</span> <span class="n">d9d6826f10ce3887950d709b53ee1d8c1849a70fa38e91d5896ad8cbc6ba3c57</span>
</pre></div>
</div>
</div>
<div class="section" id="derleme-bilgileri">
<h3>Derleme bilgileri<a class="headerlink" href="#derleme-bilgileri" title="Bu başlığın kalıcı bağlantısı">¶</a></h3>
<p>Şimdi paketin nasıl derleneceğini belirtmemiz gerekiyor, ‘htop’ standart bir C programı gibi derlendiğinden
talimat sisteminde önceden tanımlı tipleri kullanacağız.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">derle</span><span class="p">]</span>
<span class="n">tip</span>         <span class="o">=</span> <span class="n">gnu</span>
</pre></div>
</div>
<p>Bazen programlar derlenmeye gerek duyamayabilir, böyle durumlarda şablanu boş bırakmamak ve durumu belirtmek
adına derle bölümünü şu şekilde doldurabiliriz:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">derle</span><span class="p">]</span>
<span class="n">betik</span>       <span class="o">=</span> <span class="n">echo</span> <span class="s2">&quot;Derleme yapılmayacak!&quot;</span>
</pre></div>
</div>
</div>
<div class="section" id="paketleme-bilgileri">
<h3>Paketleme bilgileri<a class="headerlink" href="#paketleme-bilgileri" title="Bu başlığın kalıcı bağlantısı">¶</a></h3>
<p>Programımızın kurulumu da standart bir C programı kurulumuna eşdeğer, burada tekrar hazır tipleri kullanarak
işimizi hızlandıracağız.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">pakur</span><span class="p">]</span>
<span class="n">tip</span>         <span class="o">=</span> <span class="n">gnu</span>
</pre></div>
</div>
<p>Her ne kadar bu örnekte tipleri kullanmış olsak da, yapılan her işlem için muhtemelen bir tip bulunmayacaktır.
Eğer yapılcak işlemler bir kaç satır betiği aşmıyorsa, bunları betik anahtarları ile talimat
içinde, diğer durumlarda ise derle.sh ve pakur.sh dosyları ile yapılır.</p>
</div>
</div>
<div class="section" id="talimat-dizininin-olusturulmasi">
<h2>Talimat dizininin oluşturulması<a class="headerlink" href="#talimat-dizininin-olusturulmasi" title="Bu başlığın kalıcı bağlantısı">¶</a></h2>
<p>Talimat dosyası hazırlandıktan sonra yapılacak ilk iş, paket için gerekli talimat dizinin oluşturulmasıdır.
Talimat dizininin ismi belirli bir kural çerçevesinde verilir. Talimat dizini ismi paketin ismi ile başlar,
‘#’ ile devam eder ve arkasından sürüm numarası gelir, hemen ardından ‘-‘ ve son olarak paketin devir numarası
ile biter.
Örneğin paketlenen ‘htop’ paketinin 2.2.0’ıncı sürümünü kullandık, ve bu paketi aynı sürümde ilk paketleyişimiz
olduğundan devir numaramız da 1.  Bu durumda talimat dizininin ismi ‘htop#2.2.0-1’ olacaktır.</p>
<p>Hazırladığımız talimat dosyasını bu dizine yerleştiriyoruz.</p>
</div>
<div class="section" id="talimat-in-repoya-eklenmesi">
<h2>Talimat’ın repoya eklenmesi<a class="headerlink" href="#talimat-in-repoya-eklenmesi" title="Bu başlığın kalıcı bağlantısı">¶</a></h2>
<p>Şimdi ise sıra hazırladığımız talimatı kullanmaya geldi. Bunun için talimat dizinini bir kaynağa yüklemeli ve
mps’yi bu kaynağı tanıyacak şekilde konfigüre etmeliyiz. Bunun için en etkili yol bir git reposu kullanmaktır.
Bu belgede hazırlanan ‘htop’ talimat dizinine <a class="reference external" href="https://notabug.org/gysddn/mpsrepo/src/master/talimatname/htop%232.2.0-1">buradaki</a>
git reposundan ulaşılabilir.</p>
<p>Talimat dizinini bir kaynağa yükledikten sonra ise mps’in bunu görmesi için /usr/milis/mps/conf/conf.lua dosyasını
değiştirmemiz gerekiyor.
Dosyayı açtıktan sonra ‘talimatdepo’ altına kendi dizinimizi ekliyoruz:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">...</span>
<span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">=</span><span class="p">{[</span><span class="s2">&quot;https://notabug.org/gysddn/mpsrepo&quot;</span><span class="p">]</span><span class="o">=</span><span class="s2">&quot;talimatname&quot;</span><span class="p">},</span>
<span class="o">...</span>
</pre></div>
</div>
<p>Burada ilk parametre repomuzun adresi, ikinci ise reponun altında talimat dizinlerinin bulunacağı yer.</p>
<p>Yaptığımız değişikliklerin mps’ye etki etmesi için git repolarını güncelliyoruz:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>mps gun -G
</pre></div>
</div>
</div>
<div class="section" id="talimat-in-test-edilmesi-mpsdo">
<h2>Talimat’ın test edilmesi (mpsdo)<a class="headerlink" href="#talimat-in-test-edilmesi-mpsdo" title="Bu başlığın kalıcı bağlantısı">¶</a></h2>
<p>Talimatımız artık hazır ve sistem tarfından tanınıyor. Bu adımda çalışan bir Milis dağıtımında, talimatımızı
test edebiliriz. Ancak sağlıklı bir test için her zaman stabil bir ortam gerekir. Bunun için yalıtılmış bir
derleme ortamı olan mpsdo’yu kullanabilirsiniz.</p>
<div class="section" id="kurulum">
<h3>Kurulum<a class="headerlink" href="#kurulum" title="Bu başlığın kalıcı bağlantısı">¶</a></h3>
<p>mpsdo’yu kurmak için mps’yi güncellemeniz gerekmektedir:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>mps gun -H
</pre></div>
</div>
</div>
<div class="section" id="kullanim">
<h3>Kullanım<a class="headerlink" href="#kullanim" title="Bu başlığın kalıcı bağlantısı">¶</a></h3>
<p>mpsdo’nun ortamına giriş yapmak için:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo mpsdo
</pre></div>
</div>
<p>Bu adımdan sonra yapacağınız işlemler yalıtılmış derleme ortamında
gerçekleşecektir.</p>
<div class="admonition note">
<p class="admonition-title">Not</p>
<p>mpsdo derlemeler için ana sisteme bağlanmış birkaç dizin hariç
ortamı her zaman sıfırlayacaktır. Bunlar /opt, /sources, /var/cache’tir.
Aynı dizinler ana sitemde sırası ile /mnt/paketler, /sources, /mnt/milis2/pktdepo_onbellek’e
bağlanır. Bu dosyaların ana sisteme bağlanma amacı aynı işlemlerin sürekli
yapılmasının önüne geçmektir.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Not</p>
<p>Ortama her girişinizde sıfırlanacağı için mps’yi her girişinizde
güncellemeniz gerekmektedir.</p>
</div>
<p>Ortamda paket derlemek için konak bilgisayarın /mnt/milis/ortam/usr/milis/talimatname
altındaki sayısal dizinler kullanılır. Bu aşamada ‘conf.lua’ dosyanızı kontrol edip herşeyin doğru
oduğunundan emin olmakta fayda vardır.</p>
<p>Paketi derlediğimizde mps o an bulunulan dizinde gerekli paketin ‘.mps.lz’ uzantılı olan kurulma
dosyasını oluşturacaktır. Dosyayı oluşturmak istediğiniz klasöre geçtikten sonra:</p>
<ul class="simple">
<li><p>Gerekli değişiklikleri yaptıktan sonra tekil (bağımlılıklar olmadan) derleme için:</p></li>
</ul>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>mps der -t htop
</pre></div>
</div>
<ul class="simple">
<li><p>Sıralı derle-kur-paketle işlemleri için:</p></li>
</ul>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>mps der htop
</pre></div>
</div>
<p>Paketi kurmak için:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>mps kur htop#2.2.0-1-x86_64.mps.lz
</pre></div>
</div>
<p><strong>Tebrikler!!!</strong> Milis’te ilk paketinizi oluşturdunuz. Bu adımda sisteminizde htop’un kurulu ve çalışabilir
bir durumda olması gerekiyor.</p>
<p>Daha fazlası için <a class="reference external" href="https://mls.akdeniz.edu.tr/belgeler/">dökümanları</a>, <a class="reference external" href="https://notabug.org/milislinux">kaynak kodlarını</a> ve
<a class="reference external" href="https://notabug.org/milislinux/milis19/src/master/talimatname">talimat dosyalarını</a> inceleyebilirsiniz.</p>
<p>Ortamdan çıkmak için:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">exit</span>
</pre></div>
</div>
</div>
</div>
</div>


          </div>
        </div>
      </div>
    <a href="https://notabug.org/milislinux/belgeler">
        <img style="position: absolute; top: 0; right: 0; border: 0;" src="http://mls.akdeniz.edu.tr/belgeler/_static/fork.png" alt="Fork me on NotABug">
    </a>

      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
<p class="logo">
  <a href="../../index.html">
    <img class="logo" src="../../_static/logo.png" alt="Logo"/>
    
  </a>
</p>








<h3>Gezinti</h3>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="talimat.html">Talimat Sistemi</a></li>
<li class="toctree-l1"><a class="reference internal" href="mps_kurulum.html">Milis Kurulum Yönergeleri</a></li>
<li class="toctree-l1"><a class="reference internal" href="mps.html">Milis Paket Sistemi</a></li>
<li class="toctree-l1"><a class="reference internal" href="iso_yapimi.html">Sıfırdan Milis Linux Yapımı</a></li>
<li class="toctree-l1"><a class="reference internal" href="mps_ile_iso_yapimi.html">Mps ile Milis Linux Yapımı</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Milis’te Paket Üretimi</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#talimat-in-hazirlanmasi">Talimat’ın hazırlanması</a></li>
<li class="toctree-l2"><a class="reference internal" href="#talimat-dizininin-olusturulmasi">Talimat dizininin oluşturulması</a></li>
<li class="toctree-l2"><a class="reference internal" href="#talimat-in-repoya-eklenmesi">Talimat’ın repoya eklenmesi</a></li>
<li class="toctree-l2"><a class="reference internal" href="#talimat-in-test-edilmesi-mpsdo">Talimat’ın test edilmesi (mpsdo)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="ortam_olusturma.html">Milis Ortamı Oluşturma</a></li>
</ul>

<div class="relations">
<h3>Related Topics</h3>
<ul>
  <li><a href="../../index.html">Documentation overview</a><ul>
      <li>Previous: <a href="mps_ile_iso_yapimi.html" title="önceki bölüm">Mps ile Milis Linux Yapımı</a></li>
      <li>Next: <a href="ortam_olusturma.html" title="sonraki bölüm">Milis Ortamı Oluşturma</a></li>
  </ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Hızlı Arama</h3>
    <div class="searchformwrapper">
    <form class="search" action="../../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" />
      <input type="submit" value="Git" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="footer">
      &copy;2019, milislinux.
      
      |
      Powered by <a href="http://sphinx-doc.org/">Sphinx 2.1.2</a>
      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
      
      |
      <a href="../../_sources/docs/tr/miliste_paket_uretimi.rst.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>